<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 数值型相关操作
    let a1 = 10;
    let a2 = Number.MAX_VALUE;
    let a3 = Number.MIN_VALUE;
    console.log(a1, a2, a3);
    console.log(typeof a1); // number 
    console.log(isNaN(a1)); // isNaN  is not a number   true代表不是一个数字 

    // 数值型 浮点型
    let b1 = 0.1;
    let b2 = 0.2;
    let b3 = b1 + b2;
    console.log(b3); // 0.30000000000000004 
    console.log(b3 == 0.3); // false 

    console.log('----- String 字符串类型 -----');
    let c1 = '111';
    let c2 = 'aaa';
    console.log(isNaN(c1), isNaN(c2)); // false是一个数字  true不是一个数字 

    // 允许在字符串中包含制表符\t、换行符\n、双引号等，可直接使用\进行转义
    let c3 = 'bb\"AAA\"bb';
    let c4 = "ccc\"DDD\"";
    let c5 = 'e\'e\tee\nleee';
    console.log(c3, c4, c5);

    // +符号 拼接字符串
    console.log(c1 + c2); // 111aaa 
    console.log('hello ' + 'JS'); // hello JS 
    console.log('10' + '100'); // 10100 
    console.log('10' + 100); // 10100 
    console.log('c4的长度 = ' + c4.length); // c4的长度 = 8 
    console.log('是否成功: ' + true); // 是否成功: true 

    // 其它情况
    console.log(22 + 33); // 55 
    console.log('10' - 3); // 隐式转换 7 
    console.log('10' * 3); // 隐式转换 30 

    // 模板字符串
    let name = '李思思';
    let num = 'S0001';
    // 有一个学生名字叫做李思思, 她的学号是S0001 
    console.log('有一个学生名字叫做' + name + '，她的学号是' + num); 
    // 模板字符串  A student is 李思思, num is S0001 
    console.log(`A student is ${name}, num is ${num}`); 

    console.log('-------- Boolean 布尔类型 --------');
    let d1 = false;
    let d2 = true;
    console.log(d1);
    console.log(d2);

    console.log('-------- Undefined、Null --------');
    let o;
    console.log(o); // undefined 未申明的值 
    console.log(Boolean(o)); // false 

    let p = null;
    console.log(p); // null  空对象 
    console.log(typeof p); // object 
    console.log(Boolean(p)); // false 

    let w = '';
    console.log(w); // 空字符串，注意和 null/undefined 区分 
    console.log(Boolean(w)); // false 
</script>
</html>